package com.baidu;

public class Student {
    public String name;
    public int age;
    public static int classroom;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    {
        //构造代码块，一般用于初始化实例成员变量/非静态成员变量
        //执行顺序在构造方法之前
        this.age = 100;
        System.out.println("执行了构造代码块");
    }

    static {//静态代码块，一般用于初始化静态成员变量
           //执行顺序在构造代码块之前
          // 即使有多个对象，静态代码块也只执行一次

        classroom = 402;
        System.out.println("static{}......");
    }
    //因此执行顺序：静态代码块>构造代码块>构造方法
    public void staticClassroom(int classroom) {
        this.classroom = classroom;
    }
    public void print() {
        System.out.println("姓名："+ this.name
                +" 年龄："+ this.age
                +" 班级："+ this.classroom);
    }

    @Override//注释，说明该方法被重写了
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public static void staticFunc() {
        System.out.println(classroom);
        //this.name;
        //this.print();
        //静态成员方法不能调用非静态成员变量或成员方法
        //可以调用静态成员变量和静态成员方法
    }
}
